home *** CD-ROM | disk | FTP | other *** search
/ Stickerpedia Stickerbook / Stickerbook.iso / pc / DATA / behaviours.cxt / 00003_Script_ [ global ] General Field Input Control < prev    next >
Text File  |  2003-03-23  |  5KB  |  202 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8. global oMarvin, gShowingAlert, oSpr
  9.  
  10.  
  11.  
  12. property  pMyName
  13. property  spriteNum
  14. property  pMaxNumOfChars
  15. property  pLegalInputSymbol
  16. property  pLegalInput
  17. property  pOkSprite
  18. property  pAllowAlert
  19. property  pMakeEditableOnClick
  20. property  pMyMember
  21. property  pMakeEditableOnBegin
  22. property  pTabToNextField
  23. property  pTabOrderPosition
  24. property  pEmptyOnBegin
  25. property  pFirstEditableSprite
  26.  
  27.  
  28.  
  29. on beginSprite me
  30.   
  31.   --  set pMyName = SprToFullName (oMarvin, the spritenum of me)
  32.   if pOkSprite = -1 then set pOkSprite = spriteNum -1
  33.   
  34.   pMyMember = sprite(spriteNum).member
  35.   
  36.   if pMakeEditableOnBegin then sprite(spriteNum).editable = 1  
  37.   
  38.   if pLegalInputSymbol = #letters then
  39.     pLegalInput = "qwertyuiopasdfghjklzxcvbnm_"
  40.     
  41.   else if pLegalInputSymbol = #numbers then
  42.     pLegalInput = "0123456789"
  43.     
  44.   else
  45.     pLegalInput = "qwertyuiopasdfghjklzxcvbnm_0123456789 "
  46.     
  47.   end if
  48.   if pEmptyOnBegin then sprite(spriteNum).member.text = ""
  49. end
  50.  
  51. on prepareFrame me
  52.   --  if pFirstEditableSprite then 
  53.   --    sprite(spriteNum).editable = 1 
  54.   --    pFirstEditableSprite = 0  
  55.   --  end if
  56. end
  57.  
  58.  
  59. on selectAll me
  60.   
  61.   numOfCharsInMe = sprite(spriteNum).member.text.length
  62.   put numOfCharsInMe
  63.   the selStart = 1
  64.   the selEnd = 1
  65.   
  66. end
  67.  
  68.  
  69.  
  70.  
  71.  
  72.  
  73. on mouseDown me
  74.   if pMakeEditableOnClick then sprite(spriteNum).editable = 1
  75.   pass
  76. end
  77.  
  78. on keyUp me
  79.   dontpassevent  
  80. end
  81.  
  82.  
  83.  
  84. on keyDown me
  85.   if gShowingAlert and not pAllowAlert then exit
  86.   
  87.   if the key = RETURN and pOkSprite > 0  then
  88.     
  89.     -- modify oSpr, pOkSprite, #dwn
  90.     --  updatestage
  91.     
  92.     --    startTimer
  93.     --    repeat while the timer < 10
  94.     --    end repeat
  95.     
  96.     sendSprite pOkSprite, #msUp
  97.     --  updatestage
  98.     --  sendSprite pOkSprite, #mouseUp
  99.     exit
  100.   end if
  101.   
  102.   
  103.   
  104.   
  105.   theKey     = the key
  106.   theKeyCode = the keycode
  107.   
  108.   if pLegalInput contains theKey then 
  109.     -- a key was pressed that is allowed to appear in the text field:
  110.     if sprite(spriteNum).member.text.length >= pMaxNumOfChars then
  111.       beep  
  112.     else
  113.       pass
  114.     end if
  115.     
  116.     
  117.   else
  118.     
  119.     -- it's a key that isn't allowed or it's a function key:
  120.     case theKeyCode of
  121.         
  122.         
  123.       51:  -- backspace key: 
  124.         if the selStart = 0 and the selEnd = pMaxNumOfChars then
  125.           set the text of the member of sprite spriteNum = ""
  126.         end if
  127.         pass
  128.         
  129.         
  130.       48:  -- tab key:
  131.         if pTabToNextField then
  132.           -- take control of which text field will be highlighted:
  133.           deActivate me
  134.           sendAllSprites #activate, (pTabOrderPosition + 1)
  135.         else
  136.           -- leave to however the sprites are ordered
  137.           pass
  138.         end if
  139.         
  140.       123,124: -- arrow keys:
  141.         pass
  142.         
  143.     end case
  144.     
  145.   end if
  146.   
  147.   
  148. end
  149.  
  150.  
  151. on activate me, tabOrderPosition
  152.   
  153.   if pTabOrderPosition = tabOrderPosition then
  154.     sprite(spriteNum).editable = 1
  155.     sendAllSprites #fieldWasActivated, pTabOrderPosition
  156.   end if
  157.   
  158. end
  159.  
  160.  
  161.  
  162. on deActivate me
  163.   sprite(spriteNum).editable = 0
  164. end
  165.  
  166.  
  167.  
  168.  
  169.  
  170. on getPropertyDescriptionList me
  171.   
  172.   set tabOrderPositionList = [#na,1,2,3,4,5,6,7,8,9,10]
  173.   set maxCharsList         = [#1,#2,#3,#4,#5,#6,#7,#8,#9,#10,#11,#12,#13,#14,#15,#16,#17,#18,#19,#20]
  174.   set legalInputList       = [#letters,#numbers,#both]
  175.   
  176.   set description = [:]
  177.   addProp description, #pMakeEditableOnBegin,  [#comment:   "Make editable on beginSprite", #format: #boolean, #default:   0]
  178.   
  179.   addProp description, #pFirstEditableSprite,  [#comment:   "This sprite to be editable by default", #format: #boolean, #default:   0]
  180.   
  181.   addProp description, #pMakeEditableOnClick,  [#comment:   "Make editable on click", #format: #boolean, #default:   1]
  182.   
  183.   addProp description, #pEmptyOnBegin,         [#comment:   "Empty text field on beginsprite", #format: #boolean, #default:   1]
  184.   
  185.   addProp description, #pTabToNextField,       [#comment:   "Tab to next field", #format: #boolean, #default:   0]
  186.   
  187.   addProp description, #pTabOrderPosition,     [#comment:   "Tab order", #format: #integer, #default:   0, #range: tabOrderPositionList]
  188.   
  189.   addProp description, #pAllowAlert,           [#comment:   "Allow input into this field when showing alert?", #format:   #boolean, #default:   0]
  190.   
  191.   addProp description, #pOkSprite,             [#comment:   "Send #mouseDown on RETURN to sprite (0 for none, -1 for sprite in channel below):" & return, ¨
  192.                                                 #format:   #integer, #range: [#min:-1,#Max:120], #default:   0] 
  193.   
  194.   addProp description, #pMaxNumOfChars,        [#comment:   "Maximum number of chars:", #format:   #integer, #default:   12, #range: maxCharsList]
  195.   
  196.   addProp description, #pLegalInputSymbol,     [#comment:   "Legal input: " & RETURN & "Letters = qwertyuiopasdfghjklzxcvbnm_    ,    "  & "numbers = 0123456789" , ¨
  197.                                                 #format:   #symbol, #range:    legalInputList, #default:  #both]
  198.   
  199.   return description
  200. end
  201.  
  202.